Computational thinking and Problem-solving
19.1 Algorithms
Candidates should be able to:
- Show understanding of linear and binary searching methods
Notes and guidance
- Write an algorithm to implement a linear search
- Write an algorithm to implement a binary search
- The conditions necessary for the use of a binary search
- How the performance of a binary search varies according to the number of data items :::
- Show understanding of insertion sort and bubble sort methods
Notes and guidance
- Write an algorithm to implement an insertion sort
- Write an algorithm to implement a bubble sort
- Performance of a sorting routine may depend on the initial order of the data and the number of data items :::
- Show understanding of and use Abstract Data Types (ADT)
Notes and guidance
- Write algorithms to find an item in each of the following: linked list, binary tree
- Write algorithms to insert an item into each of the following: stack, queue, linked list, binary tree
- Write algorithms to delete an item from each of the following: stack, queue, linked list
- Show understanding that a graph is an example of an ADT. Describe the key features of a graph and justify its use for a given situation. Candidates will not be required to write code for a graph structure :::
- Show how it is possible for ADTs to be implemented from another ADT
Notes and guidance
Describe the following ADTs and demonstrate how they can be implemented from appropriate built- in types or other ADTs: stack, queue, linked list, dictionary, binary tree
- Show understanding that different algorithms which perform the same task can be compared by using criteria (e.g. time taken to complete the task and memory used)
Notes and guidance
Including use of Big O notation to specify time and space complexity
19.2 Recursion
Candidates should be able to:
- Show understanding of recursion
Notes and guidance
- Essential features of recursion
- How recursion is expressed in a programming language
- Write and trace recursive algorithms
- When the use of recursion is beneficial :::
- Show awareness of what a compiler has to do to translate recursive programming code
Notes and guidance
Use of stacks and unwinding